Component({
    properties: {
        hasMore: {
            type: Boolean,
            value: false
        },
        // 加载中的显示文本
        loadingText: {
            type: String,
            value: '加载中...'
        },
        // 加载失败的显示文本
        failText: {
            type: String,
            value: '加载失败, 请点击重试!'
        },
        // 没有更多后的显示文本, 默认没有则隐藏加载更多控件
        finishText: {
            type: String,
            value: '我也是有底线的~'
        },
    },
    data: {
        text: '',
        showIcon: false,
        isLoading: false
    },
    methods: {
        //加载更多的入口方法, 直接在page中使用时请在onReachBottom() 方法中调用这个方法, 并实现loadMoreListener方法去获取数据
        loadMore: function () {
            if (!this.properties.hasMore) {
                this.setData({
                    text: this.data.finishText,
                    showIcon:false,
                })
                return
            }
            if (this.data.isLoading) {
                return
            }
            this.data.isLoading = false
            this.triggerEvent('loadMoreListener')
        },
        //加载完成, 传入hasMore
        loadMoreComplete: function () {
            let text = '',  showIcon = false
            if (this.properties.hasMore) {
                showIcon = true
                text = this.properties.loadingText
            } else {
                text = this.properties.finishText
            }
            this.setData({
                text: text,
                showIcon: showIcon,
            })
            this.data.isLoading = false
        },
        // 加载失败
        loadMoreFail: function () {
            this.setData({
                showIcon: false,
                text: this.data.failText
            })
            setTimeout(()=>{
               this.data.isLoading = false
            },200)
        },
        //点击 loadmore 控件时触发, 只有加载失败时才会进入页面回调方法
        clickLoadMore: function () {
            if (this.data.text != this.data.failText) return
            this.setData({
                showIcon: true,
                text: this.data.loadingText,
            })
            this.data.isLoading = true
            this.triggerEvent('clickLoadMore')
        }
    }
})
